package org.example.analysis.model;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * 类复杂度信息
 */
@Data
@Accessors(chain = true)
public class ClassComplexity {
    /**
     * 主键ID
     */
    private Long id;
    
    /**
     * 项目名称
     */
    private String projectName;
    
    /**
     * 包名
     */
    private String packageName;
    
    /**
     * 类名
     */
    private String className;
    
    /**
     * 总代码行数
     */
    private Integer totalLinesOfCode;
    
    /**
     * 方法总数
     */
    private Integer methodCount;
    
    /**
     * 属性总数
     */
    private Integer fieldCount;
    
    /**
     * 内部类数量
     */
    private Integer innerClassCount;
    
    /**
     * 实现接口数量
     */
    private Integer interfaceCount;
    
    /**
     * 继承深度
     */
    private Integer inheritanceDepth;
    
    /**
     * 方法平均复杂度
     */
    private Double averageMethodComplexity;
    
    /**
     * 高复杂度方法数量（复杂度>8的方法）
     */
    private Integer highComplexityMethodCount;
    
    /**
     * 类的依赖数量（引用的其他类的数量）
     */
    private Integer dependencyCount;
    
    /**
     * 被依赖数量（被其他类引用的次数）
     */
    private Integer beingDependedCount;
    
    /**
     * 公共方法比例
     */
    private Double publicMethodRatio;
    
    /**
     * 复杂度等级
     */
    private ComplexityLevel level;
    
    /**
     * 复杂度得分
     */
    private Integer complexityScore;
    
    /**
     * 建议改进措施
     */
    private String improvementSuggestions;
    
    /**
     * 最后分析时间
     */
    private Date lastAnalysisTime;
    
    /**
     * 最后修改时间
     */
    private Date lastModifiedTime;
    
    /**
     * 最后修改人
     */
    private String lastModifiedBy;
    
    /**
     * 创建时间
     */
    private Date createdAt;
    
    /**
     * 是否可刷新
     */
    private Boolean refreshable = true;
} 